package someTestExcemple.huaweiOd.logicAnalysis;
//【数组拼接】
//题目描述
//        现在有多组整数数组，需要将它们合并成一个新的数组。
//        合并规则，从每个数组里按顺序取出固定长度的内容合并到新的数组中，取完的内容会删除掉，如果该行不足固定长度或者已经为空，则直接取出剩余部分的内
//        容放到新的数组中，继续下一行。
//        输入描述
//        第一行是每次读取的固定长度，0 < 长度 < 10
//        第二行是整数数组的数目，0 < 数目 < 1000
//        第3-n行是需要合并的数组，不同的 数组用回车换行分隔，数组内部用逗号分隔，最大不超过100个元素。
//        输出描述
//        输出一个新的数组，用逗号分隔
import java.util.*;
public class ArrayConcatenation {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int K = Integer.parseInt(sc.nextLine());
        int n = Integer.parseInt(sc.nextLine());
        List<Integer> result = new ArrayList<>();
        List<int[]> input =new ArrayList<>();
        for(int i=0;i<n;i++) {
            int[] input1 = Arrays.stream(sc.nextLine().split(",")).mapToInt(Integer::parseInt).toArray();
            input.add(input1);
        }
        sc.close();
        boolean[] empty = new boolean[input.size()];
        int emptyNum = 0;
        while(true) {
            if(emptyNum ==n) {
                break;
            }
            for (int t=0;t<input.size();t++) {
                int[] arr = input.get(t);
                if(empty[t]) {
                    continue;
                }
                if (arr.length != 0 && arr.length <= K) {
                    for(int i=0;i<arr.length;i++) {
                        result.add(arr[i]);
                    }
                    empty[t] = true;
                    emptyNum++;
                } else {
                    for(int i=0;i<K;i++) {
                        result.add(arr[i]);
                    }
                    //去掉前面K个
                    int[] newArr =  Arrays.copyOfRange(arr,K,arr.length);
                    input.set(t,newArr);
                }
            }
        }
        StringJoiner sj = new StringJoiner(",");
        for(int i=0;i<result.size();i++) {
            sj.add(String.valueOf(result.get(i)));
        }
        System.out.println(sj);
    }
}
